/**
 * 版权所有(C)，上海海鼎信息工程股份有限公司，2007，所有权利保留。
 * 
 * 项目名：	rumba
 * 文件名：	GWTUtil.java
 * 模块说明：	
 * 修改历史：
 * Dec 25, 2007 - lxm - 创建。
 */
package com.hd123.rumba.gwt.base.client.util;

import com.google.gwt.core.client.GWT;
import com.google.gwt.user.client.Element;

/**
 * GWT相关工具类。
 * 
 * @author lxm
 * 
 */
public final class GWTUtil {

  /**
   * 页面导航。
   * 
   * @param url
   */
  public native static void navigate(String url) /*-{
   $wnd.location.href=url;
   }-*/;

  /**
   * 页面导航。
   * 
   * @param url
   * @param target
   */
  public native static void navigate(String url, String target) /*-{
   $wnd.open(url, target);
   }-*/;

  /**
   * 使得指定元素获得焦点。
   * 
   * @param e
   */
  public native static void focus(Element e) /*-{
   e.focus();
   }-*/;

  /**
   * 使得指定元素失去焦点。
   * 
   * @param e
   */
  public native static void blur(Element e) /*-{
   e.blur();
   }-*/;

  /**
   * 取得到WebApp的URL。
   * 
   * @return
   */
  public static String getWebAppBaseURL() {
    String url = GWT.getModuleBaseURL();
    String[] words = url.split("/");
    StringBuffer sb = new StringBuffer();
    // host模式时，words.length==4
    int limit = words.length <= 4 ? 3 : 4;
    for (int i = 0; i < limit; i++) {
      sb.append(words[i]);
      sb.append("/");
    }
    return sb.toString();
  }

  /**
   * 取得在页面上访问静态资源的URL。
   * 
   * @param relativeUrl
   *          指定的静态数据文件，相对于static目录。
   * @return
   */
  public static String getStaticContentURL(String relativeUrl) {
    return getWebAppBaseURL() + "static/" + relativeUrl;
  }
}
